import { oneKeyLoginApi } from "@/api/users.js"
import useUser from "@/store/users.js"

function showToast() {
	uni.showToast({
		title: "一键登入失败",
		icon: "error",
		complete() {
			//关闭一键登入的授权窗口
			uni.closeAuthView()
			//跳转到用户名密码登入
			uni.reLaunch({
				url: "/pages/otherLogin/otherLogin"
			})
		}
	})
}

export default function() {
	uni.login({
		provider: "univerify",
		univerifyStyle: {
			fullScreen: true,
			icon: {
				path: "/static/logo.png"
			},
			phoneNum: {
				color: "#4C9D45"
			},
			authButton: {
				normalColor: "#E74852",
				textColor: '#fff',
				title: '本机号码一键登入(推荐)'
			},
			otherLoginButton: {
				title: '用户名密码登入',
				// normalColor:"#66DB7A",
				textColor: '#fff'
			},
			privacyTerms: {
				defaultCheckBoxState: false,
				isCenterHint: true
			}
		},
		success(res) {
			// console.log('一键登入---', res);
			let { access_token, openid } = res.authResult
			// 需要调用云函数中的获取手机号的方法
			uniCloud.callFunction({
					name: "getPhone",
					data: {
						access_token,
						openid
					}
				}).then(async res => {
					console.log('cloudFunction---', res)
					if (!res.result.state) {
						//可能一键登入没钱了,也可能的appKey screct错误
						//提示一键登入失败
						showToast()
						//跳转到用户名密码登入的方式
						return
					}
					//调用登入成功的
					let phoneNumber = res.result.result.phoneNumber;
					try {
						//获取用户手机号之后,调用公司的开发服务器接口,才能完成登入
						let loginRes = await oneKeyLoginApi(phoneNumber);
						console.log('---loginRes', loginRes)
						//使用pinia
						let userStore = useUser()
						if (loginRes.state) {
							//存储token
							uni.setStorageSync('myx-token', loginRes.token);
							//用户信息存储到pinia
							userStore.userInfo = loginRes.userInfo;
							//关闭一键登入界面
							uni.closeAuthView()
							//跳转页面
							uni.reLaunch({
								url: "/pages/tabBar/home/home"
							})
						} else {
							//和开发服务器连接的时候登入失败
							uni.closeAuthView();
							uni.showToast({
								title: loginRes.msg,
								icon: 'error'
							})
						}
					} catch (e) {
						uni.showToast({
							title: "网络错误",
							icon: "error",
							complete: () => {
								uni.closeAuthView()
							}
						})
					}
				})
				.catch(err => {
					console.log('cloudFunction---', err)
					//失败的直接跳转到其他登入方式
					showToast()
				})
		},
		fail(err) {
			console.log(err)
			if (err.code === 30002) {
				console.log('30002')
				//用户点击了其它方式
				uni.navigateTo({
					url: "/pages/otherLogin/otherLogin"
				})
				return
			}

			showToast()
		}
	})
}